/**
 * Created with IntelliJ IDEA.
 * Description:运算符
 * User: liangyuanzhang
 * Date: 2024-11-26
 * Time: 22:57
 */
public class Test {
    public static void main(String[] args) {
        //阿里巴巴面试题
        int a = 10 > 20 ? 10 : 20;
        System.out.println(a);//20

        //加括号后会更好看
        boolean flg = (true == true)  ?  (true == false ? false : true)  :  (false);//true
        //boolean flg = true == true  ?  true == false ? false : true  :  false;//true
        System.out.println(flg);
    }
    public static void main6(String[] args) {
        //条件运算符（三目运算符）
        /*
        布尔表达式1？表达式1：表达式2
         */
        int a = 10 > 20 ? 10 : 20;
        System.out.println(a);
    }
    public static void main5(String[] args) {
        /*
        移位运算符

        左移 <<
        向左移 右边补0 可以认为当前数字 n * 2^x -> x是移动的位数

        右移 >>
        向右移 看最前面是0补0，是1补1
        n / 2^x
         */

        /*
        无符号右移 >>>
        -1  1111 1111   >>> 1
            0111 1111

            不管前面符号位是1还是0，统统补0
         */
        byte a = -1;
        System.out.println(a >>> 1);

    }
    public static void main4(String[] args) {
        int a = 1;
        int b = 2;

        /*
        按位与 &
        按位或 |
        上面这两个运算符都可以进行逻辑判断
        不存在短路的
        */
        System.out.println(10 < 20 & 10 > 0);//都为真
        System.out.println(10 < 20 & 10 > 0);//第一个为假
        System.out.println(10 < 20 & 10 > 0);//第二个为假
        System.out.println(10 < 20 & 10 > 0);//都为假
        System.out.println(10 >20 & 10 /0 == 0);

/*        System.out.println(10 > 20 & 10 /0 == 0);// 程序抛出异常 不会出现短路
        //System.out.println(10 < 20 | 10 /0 == 0);// 程序抛出异常 不会出现短路*/
    }
    public static void main3(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println(a > b && 10/0 == 0);//短路与
        System.out.println(a > b || 10/0 == 0);//短路或

        /*
        按位异或 ^
        n ^ n = 0
        0 ^ n = n
         */

        /*
        按位取反 ~
        把对应位上每一位都进行取反
         */



/*        System.out.println(a > b || a ==1);
        System.out.println(a < b || a ==2);
        System.out.println(a < b || a ==1);
        System.out.println(a > b || a ==2);*/

/*        System.out.println(a > b && a ==1);
        System.out.println(a < b && a ==2);

        System.out.println(a < b && a ==1);*/
    }
    public static void main2(String[] args) {
        int a = 10;
        int b = 20;
        // 注意：在Java中 = 表示赋值，要与数学中的含义区分
        // 在Java中 == 表示相等
        System.out.println(a == b); // false
        System.out.println(a != b); // true
        System.out.println(a < b); // true
        System.out.println(a > b); // false
        System.out.println(a <= b); // true
        System.out.println(a >= b); // false

        //System.out.println(3 < a < 5);会编译不通过

    }
    public static void main1(String[] args) {
        //自增 和C语言一样
        int a = 10;
        int b = a++;
        System.out.println(a);
        System.out.println(b);
    }
}
